This code does **not** resize the array once you have sized it--there's a procedure to do it that, which is now empty and a function InitializeArrayValues, that will initialize extra elements when you increase the size of the array (just pass it the pointer to the array and the boundaries of the elements you want to initialize).
The code seems to work, although the testing is not yet extensive.
The code is set up to be easy to convert to other an array of another type. To do so:
(1) Change the MAX_SIZE constant to an appropriate maximum number for the TYPE you will be using; and
(2) Change the "TElement = Single" line to "TElement = YourType."
NOTE: you **must** use the range checking in code that reads or writes the Value property or ugly things could happen.
What follows is First, code for the Array object and Second sample code for calling the object.